滲透測試重新打底(3.9)--論Web情蒐工具Shodan


Posted by kahatrix on 2023-09-22

Shodan介紹

接下來跟大家分享shodan這個蠻好用的工具,花一點時間跟大家分享這個工具的用法,以及一些常見的use case。

那最簡單就是你可以從瀏覽器中輸入這個shodan.io,他也支援Command Line的版本,那我這邊先講一下如何在Command Line去使用他,這是他的安裝指令,就是用Pip去安裝:

pip3 install shodan

安裝好了記得去shodan,沒有去註冊的話可以去註冊一個account。註冊好後進入account的地方,你會有一組API key,讓你可以使用Command Line的版本的shodan:

用法也很簡單,首先shodan然後init,帶上你的API key。沒有意外他這邊會出現一個initialize:

這個時候我們可以看一下,用shodan info來看一下自己目前可以有多少的query跟做scan的數量。用最一般的account來說好了,他一個月會給你100個credit。因為shodan有蠻多種plan的,那一般人使用的應該就是這種Membership,就是這種49塊,當然比較貴的話會比較多功能。

那shodan可以用myip來找出自己的Public的IP address:

$ shodan myip 
199.30.49.210

shodan就是可以在Public的IP去做搜尋並且歸納,所以他的功能非常的強大。只要你有在Public上面,shodan就有辦法搜到你,然後他也會幫你這個IP去做整理。當然也可以針對你想要搜尋的,比如說application,來做掃描。應該說他會幫你sort出來哪一個IP有用這個application,那我這邊給一個範例好了:

shodan search --fields ip_str,port,org,hostnames elasticsearch > elasticsearch

shodan的搜尋方法就是shodan然後search,然後這個field會列出match的目標的資訊,包含他的IP address、Port number、Organization name還有Host name。那這個elasticsearch就是我的搜尋的關鍵字,那我會想說把他pipe到這個elasticsearch這個檔案裡面。

好,我已經先掃了一次,可以看一下結果:

可以看到說根據shodan的搜尋,可以搜出IP Port number、Organization name以及他的Host name。所以我們就可以知道說這個diycharm.com的Port 9200有使用elasticsearch這個application。

當然你說我想要用更多的filter,我不想要這麼多有的沒的,我想要限定我的範圍也可以。他的search方法也不難,其實就跟web的UI的用法很像,比如說我想要搜尋對岸的,那我就這邊把這個country加一個cn就可以做搜尋了:

如果你在這個地方有做一些filter,然後你又是用command line的版本,他是會消耗你的credit。但是像剛剛的只是單純的一個關鍵字的話他是不會消耗你的query的credit。

我們可以稍微動一點腦,想想看他要怎麼樣去搜尋。在這邊我們先用網頁版的就好。到shodan這邊,我們可以比如說我想要找SMB他是Port 445,我還想知道能不能登入,那我們可以用這個authentication disable(匿名登入)。那我們可能想要找像是document這樣的一個關鍵字,但是我們並沒有指定說我一定要就是什麼樣document的folder或是怎麼樣,但是很神奇的是shodan自己會幫你抓出來。可以看到在這邊他就會寫SMB status然後是authentication disable,並且有shared folder包含的document,就還蠻神奇的。

我們還可以配上像剛剛所提到的country,這邊用US來看一下。那可以看到說有66個IP很大方的讓大家去access他的document folder。那在這個地方我們可以看他有幫你整理出哪一個organization最多,以及哪一個美國的城市最多。所以他會幫你做一個stat稍微幫你歸納一下。那常見的folder當然不只document,像是shared也是很常見的,這兩個大概是最常見的。

我們當然可以把這個port給拿掉,可能會掃出更多東西,但是原則上應該都還是authentication,應該都是SMB。因為這個authentication disabled比較常出現在SMB裡面,所以他所掃出來public network會出現的東西大概都是SMB。

接下來要講的下一個東西是shodan一個蠻邪惡的功能,這個功能只有academic或者是small business account才有,是vulnerability這一個搜尋的filter。那這個vuln filter我們可以在command line上面做使用,shodan自己會幫你做一個整理,說哪一個CVE在哪一個國家出現的數量,會幫你做排序。如果要針對某一個國家進行攻擊的話,其實是一個很恐怖的方法。

指令很簡單:

shodan stats --facets vuln.verified country:cn

我們使用facets這個參數,指定我們要用vuln這個filter,country我們可以用美國的。這樣一個簡單的uery他就會顯示出在美國然後哪一個CVE,他會幫你排序下來前十個最常出現的漏洞,那是這十個漏洞以及他所對應的數量:

你可以在這一個filter上面再做一點延伸,底下還有一個verify這更恐怖,shodan會幫你verify說這一個CVE是不是真的。這麼多的漏洞可能有一些是false positive,但是你可以透過vulnability然後verify然後來壓低這個數量,可以看到說他的漏洞可能會不太一樣,這是vulnability tag的部分。

$ shodan stats --facets vuln.verified country:cn
Top 10 Results for Facet: vuln.verified
cve-2015-0204                     35,123
cve-2015-1635                     29,518
ms15-034                          29,518
cve-2015-4000                     25,619
cve-2019-0708                     10,548
cve-2017-7269                      4,805
cve-2014-0160                      4,612
cve-2021-43798                     2,345
cve-2021-31206                       941
cve-2021-26855                       442

這一個filter應該也可以用在search上面,比如說很有名的MS17-010他就是針對SMB的一個remote code execution那可以大家很常拿他來打shell,也是一個很出名的漏洞。你也可以在web的UI上面使用vuln這個tag然後帶上你想要的漏洞的名稱,像是這個MS17-010。

當然每個國家都知道說有這樣的漏洞存在,也會想要看看說你們這些駭客到底拿了這些工具來打人,之後想要做什麼,所以有時候國家政府或是公司單位都會佈置一些honeypot。honeypot是一個收集駭客在做什麼的一個工具,比如說他會在這個honeypot裡面設立了很多有漏洞的軟體或者是說他就是有一個honeypot的軟體,來吸引這些駭客來打我,那打進來之後他就來記錄看看你們這些駭客他會做些什麼事情,比如說他會想要嘗試執行一些惡意程式或者是嘗試做active directory的搜尋,藉此跟這些駭客學習。

shodan為了這種攻擊者他非常的貼心,推出了一個功能叫做honeypot score,會幫你判斷說這個IP他是不是honeypot,這個用法也很簡單:

$ shodan honeyscore 218.107.213.209

Not a honeypot
Score: 0.3

評分越高那就越有可能是honeypot,那像是我這邊隨便找出來的一個IP,這邊顯示說他不是honeypot。保護自己也很重要,因為你不會想要你的攻擊思路就這樣子隨便的交給別人,所以這個也是一個實用的小工具。

我們再介紹一些filter好了,剛剛有提到country的filter,接下來可以用用看city的filter。剛剛原本是vulnerability的tag配上country的filter是united state,可以繼續往下限縮一下,比如說我們要指定city,其實在這個地方也可以看到,就是你可以直接看直接點我要什麼city,比如說我要有亞特蘭大,那他就會幫你再過濾下來。

當然你也可以不要過濾這個亞特蘭大,想要過濾vulnerability的這個tag也可以,比如說這邊有2015-1635這個cve,他是http的一個RCE,當他這個打出來,然後搜出來點進去的時候,可以看到shodan已經直接幫你列出說這一個IP他有怎麼樣的漏洞,像這邊的三個都是shodan認證的漏洞。

因為他有filter出來,你可以在這個open port上面看說這個目標是一個IIS http,那你也可以按這一個按鍵跳到真正的網站,所以這真的是蠻恐怖的。

這邊想分享一個人家在twitter上面分享的漏洞,是一個針對cisco的ASA這個產品的file read漏洞,可以去做檔案的讀取而且是unauthenticated,也就是我們不需要登入也可以去讀這個目標的檔案,那這個就非常危險,影響範圍應該是蠻大的。

如果我們今天看到twitter這樣的一個貼文,想要去開採zero day或者是去滲透,那我們可以怎麼做?我們可以看到他這邊告訴你說他有這樣的一個url,然後他就會出現這樣的結果:

那我們就可以利用他的比如說這個+cscot或者是這個+cscoe,也可以把這些關鍵字直接就這樣子丟上來:

那基本上看到的應該都會是我們的目標沒有錯,可以看到說一打開這就是cisco的這個ASA

針對這一個漏洞應該有人寫了Nmap的NSE script,我們可以透過這個Nmap script去搜尋說我們剛剛在shodan所過濾出來的目標是不是真的有這樣的漏洞。

這是其中一個一種shodan的思路,大家會問有沒有其他思路,那當然有。舉一個小例子,大家有聽過Jenkins嗎,他是一個coserver,理當來說應該是內部的server,沒有辦法讓人家從外面進來,可是很奇怪,就是有人會把Jenkins這種內部的東西把他放在外面,這邊給大家一個link:

# Finding a P1 in one minute with Shodan.io (RCE)

他的思路很簡單,就只是利用shodan去尋找有公開在外網的Jenkins server,並且利用他裡面的command去做RCE。但是破壞力非常強大,那他這邊也提供了一個搜尋Jenkins的方法:

可以看到在世界上竟然有1312個Jenkins server暴露在外網。










Related Posts

打包程式碼必備 bundler : Webpack

打包程式碼必備 bundler : Webpack

Git 版本控制(下)

Git 版本控制(下)

MTR04_0720

MTR04_0720


Comments